package com.javalab._6feature._2generic;

import java.util.ArrayList;
import java.util.List;

public class GenericMethod {

    // 上届通配符,T必须是Number的子类
    public <T extends Number> boolean largerThan10(T t) {
        return t.intValue() > 10;
    }

    public <T extends Comparable> int compare(T a, T b) {
        return a.compareTo(b);
    }

    // ?通配符 不确定的类型
    public void list(List<? extends Number> list1, List<? extends Number> list2) {

    }
    // 虽然不确定，但是要一样
    public <T extends Number> void list2(List<T> list1, List<T> list2) {

    }

    // 下届通配符只能用在集合中

    public static void main(String[] args) {
        GenericMethod g1 = new GenericMethod();
        System.out.println(g1.largerThan10(Double.valueOf("11")));
        System.out.println(g1.largerThan10(Short.valueOf("11")));
        System.out.println(g1.largerThan10(Integer.valueOf("11")));
        System.out.println(g1.largerThan10(Long.valueOf("11")));

        System.out.println(g1.compare(Integer.valueOf("1"),Integer.valueOf("2")));

        List<Integer> list1 = new ArrayList<>();
        List<Double> list2 = new ArrayList<>();
        g1.list(list1,list2);
        g1.list2(list1,list1);
    }
}
